var websocket = null;
var host = document.location.host;
var judgeTemp = 0;

function getUuid() {
    return (S4()+S4()+"-"+S4()+"-"+S4()+"-"+S4()+"-"+S4()+S4()+S4());
}
function S4() {
    return (((1+Math.random())*0x10000)|0).toString(16).substring(1);
}
// 创建连接
function createWebSorket(){
	try{
		//判断当前浏览器是否支持WebSocket 
		if('WebSocket' in window) {
			websocket = new WebSocket('ws://' + host + '/Layui-SSM/webSocket/data/'+temp_uuid);
			initEventHandle();
		} else {
			alert('当前浏览器无法使用');
		}
	}catch(err){
		loadTemp++;
		if(loadTemp == 5){// 重连5 次不行就重新刷新浏览器
			window.location.reload();
		}
		console.log(err)
		console.log(err.message);
		setTimeout(function(){
			createWebSorket();// 由于网络问题可能无法连接（两秒后重新连接）
		}, 2000)
	}
}
function initEventHandle(){
	//连接发生错误的回调方法 
	websocket.onerror = function() {
		judgeTemp = 1;
		console.log('连接失败');
	};
	//连接成功建立的回调方法 
	websocket.onopen = function() {
		console.log('连接成功');
	}
	//接收到消息的回调方法 
	websocket.onmessage = function(event) {
		//console.log('回馈消息');
		setMessageInnerHTML(event.data);
	}
	//连接关闭的回调方法 
	websocket.onclose = function() {
		console.log('连接关闭');
		if(judgeTemp != 1){
			createWebSorket();
		}
	}
	//监听窗口关闭事件，当窗口关闭时，主动去关闭websocket连接，防止连接还没断开就关闭窗口，server端会抛异常。 
	window.onbeforeunload = function() {
		judgeTemp = 1;
		closeWebSocket();
	}
}
//关闭WebSocket连接 
function closeWebSocket() {
	websocket.close();
}
// 初始化UUID连接
var temp_uuid = getUuid();
createWebSorket();

/**
 * 接收消息
 */
var tempTimes,tempTimes2;
var mqttDate = Date.parse(new Date());
var mqttDate2 = Date.parse(new Date());
function setMessageInnerHTML(data) {// 当多人考勤时，对比上一个人推送的时间相差有没有大于2秒，大于2秒就刷新，否则等待15秒后只刷新一次
	judgeTemp = 1;
	var date = Date.parse(new Date());
	var maxTime = parseInt((date - mqttDate) / 1000);
	var maxTime2 = parseInt((date - mqttDate2) / 1000);
	if(maxTime > 2){
		selectLastScan();// 刷脸信息
		closeRefresh();
		refreshAllData();
		mqttDate = date;
	}
	if(maxTime2 > 5){
		refreshData();
		mqttDate2 = date;
	}
}
// 关闭刷新数据
function closeRefresh(){
	clearTimeout(tempTimes);
	clearTimeout(tempTimes2);
}
// 一分钟后刷新数据
function refreshData(){
	selectFaceCount();// 识别人数
	selectDay24();// 实时人流
}
// 当没有推送消息后执行
function refreshAllData(){
	tempTimes = setTimeout("selectLastScan()",1000*15);// 15秒人脸
	tempTimes2 = setTimeout("refreshData()",1000*60);// 一分钟其他所有数据
}
